package com.systop.asset.service;

import java.util.List;
import com.systop.asset.entity.Department;

/**
 * 组织架构部门信息Service接口
 * 
 * @author lsp
 * @date 2025-06-26
 */
public interface IDepartmentService 
{
    /**
     * 查询组织架构部门信息
     * 
     * @param id 组织架构部门信息主键
     * @return 组织架构部门信息
     */
    public Department selectDepartmentById(Long id);

    /**
     * 根据部门ID递归获取所属公司名称
     *
     * @param deptId 部门ID
     * @param count 递归计数器，用于防止无限递归 必须传参为0
     * @return 公司名称字符串（顶级部门名称），如果部门不存在返回空字符串，如果递归过深返回"组织结构有误"
     */
    public String  getCompanyNameByDeptId(Long deptId, int count);

    /**
     * 查询组织架构部门信息列表
     * 
     * @param department 组织架构部门信息
     * @return 组织架构部门信息集合
     */
    public List<Department> selectDepartmentList(Department department);
    public List<Department> selectDepartmentTree(Department department);

    /**
     * 新增组织架构部门信息
     * 
     * @param department 组织架构部门信息
     * @return 结果
     */
    public int insertDepartment(Department department);

    /**
     * 修改组织架构部门信息
     * 
     * @param department 组织架构部门信息
     * @return 结果
     */
    public int updateDepartment(Department department);

    /**
     * 批量删除组织架构部门信息
     * 
     * @param ids 需要删除的组织架构部门信息主键集合
     * @return 结果
     */
    public int deleteDepartmentByIds(Long[] ids);

    /**
     * 删除组织架构部门信息信息
     * 
     * @param id 组织架构部门信息主键
     * @return 结果
     */
    public int deleteDepartmentById(Long id);
}
